#include "Territorio.h"

Territorio::Territorio(string nombre) {
	this->nombre = nombre;
	this->ejercitos = 0;
}

string Territorio::getNombre() {
	return this->nombre;
}

void Territorio::colocarEjercitos(unsigned int cantidadDeEjercitos, string color) {
	if (!hayEjercitos()) {
		ejercitos = cantidadDeEjercitos;
		colorJugador = color;
	}
	else	
		if (enPoderDeJugador(color))
			ejercitos += cantidadDeEjercitos;
}

void Territorio::quitarEjercitos(unsigned int cantidadDeEjercitos) {
	ejercitos -= cantidadDeEjercitos;
}

bool Territorio::hayEjercitos() {
	return ejercitos > 0;
}

bool Territorio::enPoderDeJugador(string color) {
	return (colorJugador == color);
}

void Territorio::setEnPoderDe(string colorJugador) {
	this->colorJugador = colorJugador;
}

string Territorio::getEnPoderDe() {
	return colorJugador;
}
	

unsigned int Territorio::getCantidadDeEjercitos() {
	return ejercitos;
}

void Territorio::agregarAdyacencia(Territorio* territorio) {
	territoriosAdyacentes[territorio->getNombre()] = territorio;
}

bool Territorio::esAdyacente(Territorio* unTerritorio) {
	return (territoriosAdyacentes.count(unTerritorio->getNombre()) > 0);
}

map<string,Territorio*>* Territorio::obtenerTerritoriosAdyacentes() {
	return &territoriosAdyacentes;
}

Territorio::~Territorio() {
};
